উদাহরণ সহ Expression এবং Method Reference ব্যবহার

Expression এবং Method Reference - ম্যাপস্ট্রাক্ট (MapStruct) - Java Technologies

312

MapStruct একটি শক্তিশালী মডেল মেপিং ফ্রেমওয়ার্ক যা ডোমেইন অবজেক্ট এবং DTO (Data Transfer Object) এর মধ্যে ম্যাপিং সহজ করে তোলে। তবে কখনও কখনও ডিফল্ট ম্যাপিং কনভার্শনগুলি পর্যাপ্ত হয় না এবং কিছু কাস্টম কনভার্শন বা এক্সপ্রেশন প্রয়োজন হয়। MapStruct এই কাস্টম কনভার্শন এবং ম্যাপিংয়ের জন্য Expression এবং Method Reference সমর্থন করে।

এখানে আমরা দেখব কিভাবে MapStruct ব্যবহার করে Expression এবং Method Reference ব্যবহার করে কাস্টম কনভার্শন সম্পন্ন করা যায়।


১. MapStruct Expression ব্যবহার

Expression ব্যবহার করে আপনি ম্যাপিং কনভার্শনের জন্য Java Expression প্রদান করতে পারেন। এটি আপনাকে ডোমেইন অবজেক্টের ফিল্ড ভ্যালু কাস্টমভাবে কনভার্ট করতে সাহায্য করে।

উদাহরণ: Expression ব্যবহার করে কাস্টম ম্যাপিং

ধরা যাক, আমাদের একটি Person ক্লাস এবং একটি PersonDTO ক্লাস রয়েছে। আমরা চাই যে Person ক্লাসের fullName ফিল্ডের মধ্যে firstName এবং lastName যুক্ত করে PersonDTO এর fullName ফিল্ডে সেট করা হোক। এটি Expression ব্যবহার করে করা সম্ভব।

Person.java (Domain Object)
public class Person {
    private String firstName;
    private String lastName;
    
    // Getters and Setters
}
PersonDTO.java (DTO)
public class PersonDTO {
    private String fullName;
    
    // Getters and Setters
}
PersonMapper.java (MapStruct Mapper)
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

@Mapper
public interface PersonMapper {
    @Mapping(target = "fullName", expression = "java(person.getFirstName() + \" \" + person.getLastName())")
    PersonDTO personToPersonDTO(Person person);
}

এখানে, expression ট্যাগের মধ্যে একটি Java Expression দেওয়া হয়েছে, যা firstName এবং lastName থেকে fullName তৈরি করবে।

PersonMapper Usage
public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setFirstName("John");
        person.setLastName("Doe");

        PersonDTO personDTO = PersonMapper.INSTANCE.personToPersonDTO(person);
        System.out.println(personDTO.getFullName());  // Output: John Doe
    }
}

এখানে PersonMapper ইন্টারফেস expression ব্যবহার করে firstName এবং lastName ফিল্ডে সংযুক্ত করে fullName তৈরি করছে।


২. MapStruct Method Reference ব্যবহার

Method Reference MapStruct এর একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে ম্যাপিংয়ের জন্য একটি existing method ব্যবহার করতে সহায়তা করে। এটি Java 8 এর একটি ফিচার যা কোডের পুনঃব্যবহারযোগ্যতা এবং পরিষ্কারতা উন্নত করে।

উদাহরণ: Method Reference ব্যবহার করে কাস্টম ম্যাপিং

ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে এবং আমরা এটি PersonDTO তে ম্যাপ করতে চাই, তবে firstName এবং lastName এর মধ্যে যোগফল হিসেব করতে হবে। আমরা একটি এক্সটার্নাল মেথড ব্যবহার করব যা fullName তৈরি করবে।

Person.java (Domain Object)
public class Person {
    private String firstName;
    private String lastName;

    // Getters and Setters
}
PersonDTO.java (DTO)
public class PersonDTO {
    private String fullName;

    // Getters and Setters
}
PersonMapper.java (MapStruct Mapper)
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

@Mapper
public interface PersonMapper {
    
    @Mapping(target = "fullName", source = "person", qualifiedByName = "mapFullName")
    PersonDTO personToPersonDTO(Person person);

    // Method Reference for custom conversion
    default String mapFullName(Person person) {
        return person.getFirstName() + " " + person.getLastName();
    }
}

এখানে, mapFullName মেথডটি Person ক্লাসের firstName এবং lastName ফিল্ডকে fullName এ কনভার্ট করে। মেপিংয়ের জন্য আমরা qualifiedByName ব্যবহার করছি, যা mapFullName মেথডকে নির্দেশ করে।

PersonMapper Usage
public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setFirstName("John");
        person.setLastName("Doe");

        PersonDTO personDTO = PersonMapper.INSTANCE.personToPersonDTO(person);
        System.out.println(personDTO.getFullName());  // Output: John Doe
    }
}

এখানে, PersonMapper ইন্টারফেস mapFullName মেথড রেফারেন্স ব্যবহার করে firstName এবং lastName এর মান যোগ করে fullName তৈরি করছে।


৩. Expression এবং Method Reference এর পার্থক্য

  1. Expression:
    • আপনি সরাসরি একটি Java Expression প্রদান করেন।
    • এটি সাধারণত ম্যাপিংয়ের মধ্যে কাস্টম লজিক প্রয়োগ করতে ব্যবহৃত হয়।
    • Expression লাইনটি খুবই স্পষ্ট এবং স্বল্প হয়ে থাকে।
  2. Method Reference:
    • এখানে আপনি একটি বিদ্যমান মেথড রেফারেন্স ব্যবহার করেন।
    • এটি কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং আপনি কোনো কাস্টম লজিক প্রয়োগ করতে পারেন যা অন্য কোথাও আগে লেখা হয়ে থাকতে পারে।
    • Method Reference সাধারণত আপনার কোডে পুনরায় একই লজিক ব্যবহার করার সুবিধা দেয়।

সারাংশ

MapStruct এর মাধ্যমে Expression এবং Method Reference ব্যবহার করে আপনি কাস্টম কনভার্শন বা ম্যাপিং প্রক্রিয়া পরিচালনা করতে পারেন। Expression ব্যবহার করে আপনি সরাসরি কাস্টম কোড প্রয়োগ করতে পারেন, যেখানে Method Reference ব্যবহার করে একটি বিদ্যমান মেথড রেফারেন্স করতে পারেন যা ম্যাপিং প্রক্রিয়াকে সহজতর করে। এগুলি MapStruct এর শক্তিশালী বৈশিষ্ট্য, যা ডোমেইন অবজেক্টের মধ্যে কাস্টম কনভার্শন প্রয়োগ করতে সহায়ক।


Content added By
Promotion

Are you sure to start over?

Loading...